/**
 * 
 */
package com.autonavi.commons.dbhelper.rshandler;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.autonavi.commons.dbhelper.DBHelperException;

/**
 * @author jintao.yu
 * @date 2014年1月9日 上午11:16:08
 * @package com.autonavi.commons.dbhelper.handler
 * @className AbstractListHandler
 * @Description TODO
 */
public abstract class AbstractListHandler<T> implements RSHandler<List<T>>{

	/**
	 * @author jintao.yu
	 * @date 2014年1月9日 上午11:16:08 
	 * @Description TODO
	 */
	public AbstractListHandler() {
		// TODO Auto-generated constructor stub
	}

	/** 
	 * @author jintao.yu
	 * @date 2014年1月9日 上午11:16:41
	 * @see com.autonavi.commons.dbhelper.rshandler.RSHandler#handle(java.sql.ResultSet)
	 * @Description TODO
	 * @param resultSet
	 * @return 
	 */
	public List<T> handle(ResultSet resultSet)	throws DBHelperException {
		// TODO Auto-generated method stub
		if(resultSet==null){
			throw new IllegalArgumentException("resultSet must not be null.."); 
		}
		List<T> resultList=new ArrayList<T>();
		try{
			while(resultSet.next()){
				resultList.add(genValue(resultSet));
			}
		}catch(SQLException e){
			throw new DBHelperException("resultset happen some exception..",e);
		}
		return resultList;
	}
	public abstract T genValue(ResultSet resultSet) throws DBHelperException;
}
